/**
 * 两个类型
 * 1、类类型（构造函数）
 * 2、对象类型
 */

{
  class Person {
    // 属于类
    static type = '人';

    public name: string;
    public age: number;
    public gender: string;

    constructor(name: string, age: number, gender: '男' | '女' = '男') {
      this.name = name;
      this.age = age;
      this.gender = gender;
    }

    public eat(): void {
      //...
    }
  }

  // 对象类型
  // interface Person {
  //   name: string;
  //   age: number;
  //   gender: string;
  //   eat(): void;
  // }

  // 类类型（构造函数）
  // interface PersonConstructor {
  //   new (name: string, age: number, gender: '男' | '女'): Person
  //   type: string;
  // }

  let p1 = new Person('aaa', 12, '男');

  p1.eat();
  Person.type;
}